## The Paley code of a finite field

from PyM import *

def paley_code(F):
    q = cardinal(F)
    I = I_(q,Z_)
    U = matrix(1,q)
    S = paley_matrix(F)
    z = matrix(0,1,q)
    C = stack(z,I+S+U)
    Sm = matrix(0,q)
    for i in range(q):
        for j in range(q):
            Sm[i,j] = -S[i,j]
    C = stack(C,Sm+I+U)
    for i in range(nrows(C)):
        for j in range(ncols(C)):
            C[i,j] = C[i,j]//2
    u = matrix(1,1,q)
    C = stack(C,u)
    return C
    
## Example

[F,x] = extension(Zn(3),[1,0,1])

show(paley_code(F))

